/*
 * Copyright (c) 2022  by Junzhao
 * THIS FILE IS PART OF JAVASE Song Huongkang PROJECT
 * All Rights Reserved.
 */

package 学习.中.Object类的使用;

import java.util.Date;

/**
 * @description Object类
 *      所有类的 根父类
 *
 *      只有一个空参的构造器 没有属性
 *
 *      有克隆 垃圾回收 获得类 转字符 比较 获得哈希值 等方法
 *
 *       比较的是数值是否先等 比较应用数据类型时 比较的是两个对象是否指向同一地址（对象实体）
 *          equals() 用于比较两个对象是否相等（用于引用数据类型） Object中等同于 ==
 *          像String Date 等都重写了equals()方法 要注意是否重写过此方法
 *          通常我们自定义的类使用equals()也通常是比较两个对象的试实体内容是否相等那就需要我们对方法进行重写
 *       toString() 方法输出对象的类 和地址值
 *       java.lang.Object@1b6d3586
 *
 *       像String File Date 包装类都重写了此方法在调用对象的此方法时返回一个实体内容
 *
 *
 *
 * @author 俊昭
 * @date 2022/3/28
*/
public class ObjectTest {
    public static void main(String[] args) {
        Object o1 =new Object();
        Object o2 =new Object();

        // equals()方法 == 与equals() 的区别
        // == 可以比较基本与引用数据类型
        int i = 1,j=1;
        double l =1.0;
        char m=1,n=65,o='A';
        System.out.println(i==j);//'true'
        System.out.println(i==l);//'true'
        System.out.println(i==m);//'true'
        System.out.println(n==o);//'true'
//         比较的是数值是否先等 比较应用数据类型时 比较的是两个对象是否指向同一地址（对象实体）
//         equals() 用于比较两个对象是否相等（用于引用数据类型） Object中等同于 ==
//         像String Date 等都重写了equals()方法 要注意是否重写过此方法
        System.out.println(o1.equals(o2));// false
        // toString方法
        System.out.println(o1.toString());
        Date date =new Date();
        System.out.println(date.getTime());
        System.out.println(date.toString());
    }
    /*
    @Override
    public boolean equals(Object obj){
        if(obj==this){
            return true;
        }
        if (obj instanceof ObjectTest){
            ObjectTest ot1 = (ObjectTest) obj;
//            return ot1.shuxing == obj.shuxing&&obj.xxx.equals(obj.xxx);
        }else{
            return false;
        }
    }

     */
    
}
